//缓存相关的自定义插件
const sessionCache = {
  /**
   * 设置sessionStorage值
   * @param key
   * @param value
   */
  set (key, value) {
    if (!sessionStorage) {
      return
    }
    if (key != null && value != null) {
      sessionStorage.setItem(key, value)
    }
  },
  /**
   * 获取sessionStorage值
   * @param key
   * @returns {*|null}
   */
  get (key) {
    if (!sessionStorage) {
      return null
    }
    if (key == null) {
      return null
    }
    return sessionStorage.getItem(key)
  },
  /**
   * 设置sessionStorage json值
   * @param key
   * @param jsonValue
   */
  setJSON (key, jsonValue) {
    if (jsonValue != null) {
      this.set(key, JSON.stringify(jsonValue))
    }
  },
  /**
   * 获取sessionStorage json值
   * @param key
   * @returns {any}
   */
  getJSON (key) {
    const value = this.get(key)
    if (value != null) {
      return JSON.parse(value)
    }
  },
  /**
   * 删除sessionStorage值
   * @param key
   */
  remove (key) {
    sessionStorage.removeItem(key);
  }
}

const localCache = {
  /**
   * 设置localStorage值
   * @param key
   * @param value
   */
  set (key, value) {
    if (!localStorage) {
      return
    }
    if (key != null && value != null) {
      localStorage.setItem(key, value)
    }
  },
  /**
   * 获取localStorage值
   * @param key
   * @returns {*|null}
   */
  get (key) {
    if (!localStorage) {
      return null
    }
    if (key == null) {
      return null
    }
    return localStorage.getItem(key)
  },
  /**
   * 设置localStorage json值
   * @param key
   * @param jsonValue
   */
  setJSON (key, jsonValue) {
    if (jsonValue != null) {
      this.set(key, JSON.stringify(jsonValue))
    }
  },
  /**
   * 获取localStorage json值
   * @param key
   * @returns {any}
   */
  getJSON (key) {
    const value = this.get(key)
    if (value != null) {
      return JSON.parse(value)
    }
  },
  /**
   * 删除localStorage值
   * @param key
   */
  remove (key) {
    localStorage.removeItem(key);
  }
}

export default {
  /**
   * 会话级缓存
   */
  session: sessionCache,
  /**
   * 本地缓存
   */
  local: localCache
}
